#include "stylefile.h"

//根据用户信息获取文件路径
void GetPath(PUserType pUser, char *path)
{
    sprintf(path, "%s_%ld.txt",pUser->userName, pUser->userId);
}

//输入格式本地化
void InputStyleFile(Style style, char *buf)
{
    sprintf(buf, "显示方式: %d 前景色: %d 背景色: %d", style.from, style.fGC, style.bGC);
}

//输出格式本地化
void OutputStyleFile(PStyle pStyle, char *buf)
{
    sscanf(buf, "显示方式: %d 前景色: %d 背景色: %d", &pStyle->from, &pStyle->fGC, &pStyle->bGC);
}

/*
    功能：保存样式
    参数：
        pUser 用户信息空间地址
        style 样式信息
*/
int SaveStyle(PUserType pUser, Style style)
{
    char path[50] = "";
    char buf[50] = {};
    int fd = -1;
    int res = -1;

    //根据用户信息获取文件路径
    GetPath(pUser, path);

    //创建打开文件
    fd = open(path, O_WRONLY|O_CREAT|O_TRUNC,0666);
	if(-1 == fd)
	{
		return -1;
	}
	
    //输入格式本地化
    InputStyleFile(style, buf);
	res = write(fd, buf, strlen(buf));
	if(res == -1)
    {
		return -1;
	}
	
	close(fd);

    return 0;
}

/*
    功能：加载样式
    参数：
        pUser 用户信息空间地址
        pStyle 样式信息的地址空间
    返回值:成功 0, 失败 -1
*/
int LoadStyle(PUserType pUser, PStyle pStyle)
{
    char path[50] = "";
    char buf[50] = {};
    int fd = -1;
    int res = -1;

    //根据用户信息获取文件路径
    GetPath(pUser, path);

    fd = open(path,  O_RDONLY|O_CREAT,0666);
	if(-1 == fd)
	{
		perror("open error\n");
		return -1;
	}
	
	res = read(fd, buf, sizeof(buf));//res 0, -1, 个数
	if(res == -1)
    {
		return -1;
	}
    OutputStyleFile(pStyle, buf);

	close(fd);
    return 0;
}